#ifndef __GE_BUTTON_H__
#define __GE_BUTTON_H__


#include "GE_Base.h"
namespace Syp
{
	///GuiBase is the base class from which all GUI components inherit from.It contains basic functionality required by all GUI Components to function.
	class SYPAPI Button : public GuiBase
	{
	public:
		///Creates a Button and returns a pointer to it.
        static Button* createButton(const String& name,float Width, float Height);
		///The following are virtual functions which can be overloaded to define what happens when triggered for all objects of the class type. 
		//Defines what should always happen to the component of that type onMouseClick
		virtual void mouseLeftClick(){};
		virtual void mouseRightClick(){};
		//Defines what should always happen to the component of that type onMouseOut
		virtual void mouseOut(){};
		//Defines what should always happen to the component of that type onMouseUp
		virtual void mouseLeftUp(){};
		virtual void mouseRightUp(){};
//		virtual void mouseMove(const MouseState& ms){};
		///Sets the text on the button
		void setButtonText(const String& txt);
		///Sets the font to be used for the button
		void setButtonTextFont(Font* f);	

	protected:
		Button(const String& name,float Width, float Height);
		~Button();
		String text;
		Font* fo;
		MeshInstance* textInst;

	private:
	

	};

}

#endif //__GE_BUTTON_H__
